package com.briup.day02;

import java.util.Random;
import java.util.Scanner;

/**
 * 流程控制测试类
 */
public class ProcessControl {
    public static void main(String[] args) {
        /*
            流程控制：就是对方法内的代码执行流程进行控制的手段
            在Java中的流程方式有哪些：
                1、顺序流程：指从方法内的第一行逐行执行到最后一行的流程，
                    叫做顺序流程，Java程序默认情况下就是按照顺序流程进行执行
                2、分支流程：通过条件控制，有选择的执行多个分支中的某一条/组代码
                    分支流程主要通过if...else / if...else if...else / switch...case
                    这三种分支控制手段进行实现，其中if...else只能控制两个分支进行选择，
                    if...else if...else / switch...case都可以一次性创建多个分支，
                    根据条件进行选择
               3、循环流程：通过条件控制，控制某一个代码片段是否执行多次；
                    可以使用 for(;;){}、while(){}、do{}while() 来实现循环流程的控制
                    注意，在循环流程控制中，无论是哪一种方式，都必须包含：
                        - 循环条件，是否进入循环的条件
                        - 迭代条件，执行下一次循环之前执行的代码，用于控制下一次是否进入循环的条件
                        - 循环体，指需要被循环执行的代码片段所在的位置

         */
        // 期望age变量的值是变化的：1、人为控制输入；2、程序随机产生
        // 1、人工输入，Scanner类是Java中用于扫描用户输入数据的工具类
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入你的年龄:");
        int age = sc.nextInt();
        if (age >= 18) {
            System.out.printf("您当前的年龄为%s，属于成年人%n", age);
        } else {
            System.out.printf("您当前的年龄为%s，属于未成年人%n", age);
        }

        // 2、程序随机产生，Math类 [0.0,1.0) 0.99
        // 2.1 Math类中提供了一个方法random，其能够返回[0.0,1.0)之间的随机数，
        // 你可以通过 random*(a+1) 的方式得到 [0,a]之间的随机数
        int age2 = (int) (Math.random() * 150);
        if (age2 >= 18) {
            System.out.printf("您当前的年龄为%s，属于成年人%n", age2);
        } else {
            System.out.printf("您当前的年龄为%s，属于未成年人%n", age2);
        }

        // 2.2 使用Random类
        Random random = new Random();
        // 控制输出的结果在[0,a)中，那么需要使用nextInt(上限值)
        System.out.println(random.nextInt(150));

        // 输出100次 hello world!
        for (int i = 0; i < 100; i++) {
            System.out.println("hello world!");
        }
    }
}
